home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Risc World 3
/
Risc World 3.iso
/
SOFTWARE
/
ISSUE2
/
FASTERPC
/
!FASTERPC
/
!CONFIG
/
!RUNIMAGE
(
.txt
)
< prev
next >
Wrap
RISC OS BBC BASIC V Source
|
2002-03-09
|
16KB
|
686 lines
><Config$Dir>.!RunImage
FasterPC configuration utility.
Copyright
Darren Sillett, 1993.
Modifications David Lawrence, 1993.
Version 1.10
Floppy status characters
X : Doesn't exist
3 : 3
" drive
5 : 5
" drive
initialise
error
"Wimp_Poll",wimp_mask%,wimp_block%
result%
result%
3
2 :
"Wimp_OpenWindow",,wimp_block%
4
3 :
"Wimp_CloseWindow",,wimp_block%
" finished% =
-
6 :
mouse_click(wimp_block%!8)
7 :
user_drag_box
:
8 :
key_press(wimp_block%!4,wimp_block%!24)
9 :
menu_select
2
17,18 :
receive_message(wimp_block%!16)
finished%
closedown_wimp(task_id%)
initialise
buffer% 100
finished% =
#5 task_id% =
initialise_wimp("FasterPC Config")
number_of_hdiscs% = 0
number_of_fdiscs% = 0
"ADFS_Drives"
,num_fdrives%
"OS_Byte",&81,0,&FF
,ROV%
ROV%>&A3
)1
open_template("<Config$Dir>.Templates2")
+1
open_template("<Config$Dir>.Templates1")
-( config% =
load_template("config")
close_template
setup_floppy_disks
setup_hard_disks
wimp_block%!0 = config%
22 wimp_block%!4 = 100 : wimp_block%!8 = 300
32 wimp_block%!12 = 1000 : wimp_block%!16 = 900
40 wimp_block%!20 = 0 : wimp_block%!24 = 0
wimp_block%!28 = -1
"Wimp_OpenWindow",,wimp_block%
setup_hard_disks
icon_string_set(config%,5,
read_var_set_drv("FPC$Drive_C",buffer%))
read_size(1)
icon_string_set(config%,6,
read_var_set_drv("FPC$Drive_D",buffer%))
read_size(2)
icon_string_set(config%,7,
read_var_set_drv("FPC$Drive_E",buffer%))
read_size(3)
icon_string_set(config%,8,
read_var_set_drv("FPC$Drive_F",buffer%))
read_size(4)
icon_string_set(config%,52,
(number_of_hdiscs%))
number_of_hdiscs% > 0
E(
index% = 1
number_of_hdiscs%
F#
number_of_fdiscs% > 2
GV
icon_string_set(config%,18 + index%,
("B")+index%+number_of_fdiscs%-2))
IB
icon_string_set(config%,18 + index%,
("B")+index%))
K/
ungrey_out_icon(config%,00 + index%)
L/
ungrey_out_icon(config%,08 + index%)
M/
ungrey_out_icon(config%,14 + index%)
N/
ungrey_out_icon(config%,18 + index%)
O
number_of_hdiscs% < 4
S,
index% = number_of_hdiscs% + 1
T-
grey_out_icon(config%,00 + index%)
U-
grey_out_icon(config%,08 + index%)
V-
grey_out_icon(config%,14 + index%)
W-
grey_out_icon(config%,18 + index%)
X
setup_floppy_disks
]G floppy_drives$=
read_variable("FPC$Floppies",buffer%)+"XXXXX",5)
index% = 1
`G
floppy_drives$,index%,1) = "X")
(index% > num_fdrives%)
a-
grey_out_icon(config%,30 + index%)
b-
grey_out_icon(config%,34 + index%)
c-
grey_out_icon(config%,38 + index%)
d-
grey_out_icon(config%,42 + index%)
e
f-
floppy_drives$,index%,1) = "3"
g.
Set up icon for 3
" drive option
h-
select_icon(config%,34 + index%)
i/
unselect_icon(config%,38 + index%)
k.
Set up icon for 5
" drive option
l/
unselect_icon(config%,34 + index%)
m-
select_icon(config%,38 + index%)
o/
ungrey_out_icon(config%,30 + index%)
p/
ungrey_out_icon(config%,34 + index%)
q/
ungrey_out_icon(config%,38 + index%)
r/
ungrey_out_icon(config%,42 + index%)
s$ number_of_fdiscs% = index%
t
icon_string_set(config%,48,
(number_of_fdiscs%))
receive_message(message%)
message%
|'
quit% : finished% =
}$
data_load% :
data_load
~+
task_init% :
check_fpc_config
'
config_abort% : finished% =
mouse_click(click%)
click%
select_button :
wimp_block%!16
4
1,2,3,4 :
create_disc(wimp_block%!16)
/
52 :
change_number_of_hdiscs(+1)
14 :
save_setup
29 :
set_setup
/
48 :
change_number_of_fdiscs(+1)
adjust_button :
wimp_block%!16
/
52 :
change_number_of_hdiscs(-1)
14 :
save_setup
29 :
set_setup
/
48 :
change_number_of_fdiscs(-1)
H
35,36,37,38,39,40,41,42 :
check_radio_bug(wimp_block%!16)
key_press(icon%,key%)
key%
#
5, 6, 7, 8 :
move caret
%
"Wimp_ProcessKey",key%
initialise_wimp(app_name$)
task_id%,version%
wimp_block% 512,data_block% 64
"Wimp_Initialise",200,&4B534154,app_name$
version%,task_id%
! application$ = app_name$
wimp_mask% = 1
adjust_button = 1
select_button = 4
data_load% = 3
task_init% = &400C2
config_change% = &8247E
config_abort% = &8247F
quit% = 0
=task_id%
closedown_wimp(task_id%)
"Wimp_CloseDown",task_id%,&4B534154
open_template(file$)
icon_space% 4096, template% 3072
* icon_space_end% = icon_space% + 4096
"Wimp_OpenTemplate",,file$
load_template(name$)
handle%
"Wimp_LoadTemplate",,template%,icon_space%,icon_space_end%,-1,name$,0
,,icon_space%
"Wimp_CreateWindow",,template%
handle%
=handle%
close_template
"Wimp_CloseTemplate"
icon_string_set(window%,icon%,text$)
!data_block% = window%
data_block%!4 = icon%
"Wimp_GetIconState",,data_block%
) $(!(data_block%+28)) = text$ +
data_block%!8 = 0
data_block%!12 = 0
"Wimp_SetIconState",,data_block%
error
!wimp_block% =
I $(wimp_block%+4) =
$ + " (internal error code " +
) + ")" +
"Wimp_ReportError",wimp_block%,3,application$
,result%
result% = 2
closedown_wimp(task_id%) :
icon_sprite_set(window%,icon%,text$)
!data_block% = window%
data_block%!4 = icon%
"Wimp_GetIconState",,data_block%
& $(data_block%+20) = text$ +
data_block%!8 = 0
data_block%!12 = 0
"Wimp_SetIconState",,data_block%
get_string(pointer%)
(?pointer% > 31)
a$ +=
(?pointer%)
pointer% += 1
send_config_change_message
wimp_block%!0 = 20
wimp_block%!12 = 0
% wimp_block%!16 = config_change%
"Wimp_SendMessage",17,wimp_block%,0
ok(message$)
!wimp_block% = 0
( $(wimp_block%+4) = message$ +
"Wimp_ReportError",wimp_block%,1,application$
icon_string_get(window%,icon%)
!data_block% = window%
data_block%!4 = icon%
"Wimp_GetIconState",,data_block%
get_string(!(data_block%+28))
get_icon_for_esg(window%,esg%)
"Wimp_WhichIcon",window%,data_block%,&003F0000,&00200000+(esg%<<16)
=!data_block%
data_load
wimp_block%!24
5, 6, 7, 8 :
#
wimp_block%!40 = &FC8
P
icon_string_set(config%,wimp_block%!24,
get_string(wimp_block%+44))
,
read_size((wimp_block%!24) - 4)
>
ok("Dragged file not of DOSDisc filetype (&FC8)")
change_number_of_hdiscs(by%)
: number_of_hdiscs% =
icon_string_get(config%,52))
number_of_hdiscs% += by%
number_of_hdiscs% < 0
number_of_hdiscs% = 0:by% = 0
number_of_hdiscs% > 4
number_of_hdiscs% = 4:by% = 0
by% = 1
9
icon_string_set(config%,52,
(number_of_hdiscs%))
8
ungrey_out_icon(config%,00 + number_of_hdiscs%)
8
ungrey_out_icon(config%,08 + number_of_hdiscs%)
8
ungrey_out_icon(config%,14 + number_of_hdiscs%)
8
ungrey_out_icon(config%,18 + number_of_hdiscs%)
=
Offer standard name if file/path text icon is empty
<
icon_string_get(config%,4+number_of_hdiscs%)=""
i
icon_string_set(config%,4+number_of_hdiscs%,"ADFS::4.$.PC.Drive_"+
("B")+number_of_hdiscs%))
by% = -1
;
icon_string_set(config%,52,
(number_of_hdiscs%))
<
grey_out_icon(config%,00 + number_of_hdiscs% + 1)
<
grey_out_icon(config%,08 + number_of_hdiscs% + 1)
<
grey_out_icon(config%,14 + number_of_hdiscs% + 1)
<
grey_out_icon(config%,18 + number_of_hdiscs% + 1)
change_number_of_fdiscs(by%)
%: number_of_fdiscs% =
icon_string_get(config%,48))
&: number_of_hdiscs% =
icon_string_get(config%,52))
number_of_fdiscs% += by%
number_of_fdiscs% < 0
number_of_fdiscs% = 0:by% = 0
number_of_fdiscs% > num_fdrives%
number_of_fdiscs% = num_fdrives%:by% = 0
by% = 1
,9
icon_string_set(config%,48,
(number_of_fdiscs%))
-8
ungrey_out_icon(config%,30 + number_of_fdiscs%)
.8
ungrey_out_icon(config%,34 + number_of_fdiscs%)
/8
ungrey_out_icon(config%,38 + number_of_fdiscs%)
08
ungrey_out_icon(config%,42 + number_of_fdiscs%)
1=
(number_of_fdiscs% > 2)
(number_of_hdiscs% > 0)
2*
index% = 1
number_of_hdiscs%
3V
icon_string_set(config%,18 + index%,
("B")+index%+number_of_fdiscs%-2))
5
by% = -1
8;
icon_string_set(config%,48,
(number_of_fdiscs%))
9<
grey_out_icon(config%,30 + number_of_fdiscs% + 1)
:<
grey_out_icon(config%,34 + number_of_fdiscs% + 1)
;<
grey_out_icon(config%,38 + number_of_fdiscs% + 1)
<<
grey_out_icon(config%,42 + number_of_fdiscs% + 1)
=?
(number_of_fdiscs% > 1)
(number_of_hdiscs% > 0)
>,
index% = 1
number_of_hdiscs%
?X
icon_string_set(config%,18 + index%,
("B")+index%+number_of_fdiscs%-2))
B
grey_out_icon(window%,icon%)
data_block%!0 = window%
data_block%!4 = icon%
"Wimp_GetIconState",,data_block%
data_block%!8 = &00400000
K data_block%!12 = &00400000
"Wimp_SetIconState",,data_block%
ungrey_out_icon(window%,icon%)
data_block%!0 = window%
data_block%!4 = icon%
"Wimp_GetIconState",,data_block%
data_block%!8 = 0
T data_block%!12 = &00400000
"Wimp_SetIconState",,data_block%
select_icon(window%,icon%)
data_block%!0 = window%
data_block%!4 = icon%
"Wimp_GetIconState",,data_block%
data_block%!8 = &00200000
] data_block%!12 = &00200000
"Wimp_SetIconState",,data_block%
unselect_icon(window%,icon%)
data_block%!0 = window%
data_block%!4 = icon%
"Wimp_GetIconState",,data_block%
data_block%!8 = 0
f data_block%!12 = &00200000
"Wimp_SetIconState",,data_block%
set_setup
valid_settings
l; number_of_hdiscs% =
icon_string_get(config%,52))
m!
number_of_hdiscs% > 0
n)
loop% = 1
number_of_hdiscs%
oS
("Set FPC$Drive_"+
"B"+loop%)+" "+
icon_string_get(config%,loop%+4))
loop%
q
r!
number_of_hdiscs% < 4
s+
loop% = number_of_hdiscs%+1
t/
("Unset FPC$Drive_"+
"B"+loop%))
loop%
v
x; number_of_fdiscs% =
icon_string_get(config%,48))
floppy_drives$ = "XXXX"
z!
number_of_fdiscs% > 0
{/
loop% = number_of_fdiscs%
|?
get_icon_for_esg(config%,1+loop%) = 34 + loop%
}3 floppy_drives$ = "3" + floppy_drives$
3 floppy_drives$ = "5" + floppy_drives$
loop%
1
("Set FPC$Floppies "+
floppy_drives$,4))
#
send_config_change_message
save_setup
valid_settings
6 handle% =
("<Config$Dir>.^.Resources.Drives")
2
#handle%,"| FasterPC drive configuration"
; number_of_hdiscs% =
icon_string_get(config%,52))
!
number_of_hdiscs% > 0
)
loop% = 1
number_of_hdiscs%
Z
#handle%,"Set FPC$Drive_"+
"B"+loop%)+" "+
icon_string_get(config%,loop%+4)
loop%
!
number_of_hdiscs% < 4
+
loop% = number_of_hdiscs%+1
6
#handle%,"Unset FPC$Drive_"+
"B"+loop%)
loop%
; number_of_fdiscs% =
icon_string_get(config%,48))
floppy_drives$ = "XXXX"
!
number_of_fdiscs% > 0
.
loop% = number_of_fdiscs%
?
get_icon_for_esg(config%,1+loop%) = 34 + loop%
3 floppy_drives$ = "3" + floppy_drives$
3 floppy_drives$ = "5" + floppy_drives$
loop%
8
#handle%,"Set FPC$Floppies "+
floppy_drives$,4)
#handle%
9
("Settype <Config$Dir>.^.Resources.Drives Obey")
,
("<Config$Dir>.^.Resources.Drives")
#
send_config_change_message
create_disc(disc%)
/ file$ =
icon_string_get(config%,disc%+4)
file$ = ""
@
ok("Undefined hard disc file for drive "+
"B"+disc%))
%
file_not_exist(file$))
R
ok("Drive "+
"B"+disc%)+" hard disc file '"+file$+"' already exists")
@ size% =
icon_string_get(config%,disc%+8))*1024*1024
size% = 0
Z
ok("Cannot create hard disc file for drive "+
"B"+disc%)+" with size zero")
3
create disc of size integer cylinders
, size%=17*4*512*
(size%/4/17/512)
6
"XOS_File",11,file$,&FC8,,0,0
; flags%
(flags%
n
ok("Error creating hard disc file '"+file$+"' of length "+
(size%)+" for drive "+
"B"+disc%))
)
fill partition with zeros
! FHandle% =
(file$)
"Hourglass_On"
6
"XOS_Args",3,FHandle%,size%
; flags%
"Hourglass_Off"
(flags%
p
ok("Error creating hard disc file '"+file$+"' of length "+
(size%)+" for drive "+
"B"+disc%))
#FHandle%
read_variable(name$,buffer%)
"XOS_ReadVarVal",name$,buffer%,100,0,0
,,length%
buffer%?length% = 13
=$(buffer%)
read_size(disc%)
/ disc$ =
icon_string_get(config%,disc%+4)
"XOS_File",13,disc$
type%,,,,length% ; flags%
(type% = 0)
(flags%
-
icon_string_set(config%,disc%+8,"0")
H
icon_string_set(config%,disc%+8,
((length%
(1024*1024)) + 1))
read_var_set_drv(name$,buffer%)
* drive$=
read_variable(name$,buffer%)
drive$ <> ""
number_of_hdiscs% += 1
=drive$
check_fpc_config
get_string(wimp_block%+28) = application$
%
wimp_block%!4 <> task_id%
wimp_block%!0 = 20
wimp_block%!12 = 0
wimp_block%!16 = quit%
<
"Wimp_SendMessage",17,wimp_block%,wimp_block%!4
valid_settings
no_error_found% =
number_of_hdiscs% > 0
'
loop% = 1
number_of_hdiscs%
3 file$ =
icon_string_get(config%,loop%+4)
file$ = ""
D
ok("Undefined hard disc file for drive "+
"B"+loop%))
no_error_found% =
&
file_not_exist(file$)
T
ok("Drive "+
"B"+loop%)+" hard disc file '"+file$+"' not readable")
! no_error_found% =
read_size(loop%)
loop%
=no_error_found%
file_not_exist(file$)
"XOS_File",13,file$
type%,,,,,attrib%
(type% <> 1)
(type% <> 3)
res% =
attrib%
res% =
res% =
=res%
check_radio_bug(icon%)
esg%
icon% > 38
esg% = icon% - 37
esg% = icon% - 33
"Wimp_WhichIcon",config%,data_block%,&003F0000,&00200000+(esg%<<16)
!data_block% = -1
H
No radio buttons selected, so select the one just adjusted out
#
select_icon(config%,icon%)